package org.example.mybatis.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.example.mybatis.model.UserInfo;

import java.util.List;

@Mapper
public interface UserInfoXmlMapper {
    List<UserInfo> queryUserInfoList();

    List<UserInfo> queryUserInfoId(@Param("id") Integer id);

    // 插入
    Integer  insertUserInfo(UserInfo userInfo);
    // 删除
    Integer deleteUserInfo(@Param("id") Integer userId);
    //修改
    Integer updateUserInfo(@Param("password") String password ,@Param("id") Integer id);

    List<UserInfo> queryUserInfoName(@Param("name") String name);
    List<UserInfo> queryUserInfoName2(@Param("name") String name);

    // 动态插入 ,
    Integer insert1(UserInfo userinfo);

     // 查询 根据 根据where的参数
    List<UserInfo> queryByWhere(@Param("username") String username ,@Param("age") Integer age);

    // 更新 也有些地方是 null的
    Integer update(UserInfo userinfo);
    // delete foreach
    Integer deleteForeach(List<Integer> ids );

    // 注解实现 动态SQL
    @Select("<script> " +
            "select * from userinfo"+
            "<where>"+
            "<if test='username!=null'>"+
            "username=#{username}"+
            "</if>"+
            "<if test='age!=null'>"+
            " or age = #{age}"+
            "</if>"+
            "</where>" +
            "</script>")
    List<UserInfo> query1(@Param("username")String username ,@Param("age") Integer age);

}
